package main

import (
	"fmt"
	"goloader"
	"unsafe"
	"公用模块测试/port"
)

func main() {
	// 重定向库
	symPtr := make(map[string]uintptr)
	goloader.RegSymbol(symPtr)
	// 装载库
	r, err := goloader.ReadObjs([]string{"port.a", "modules.a"}, []string{"port", "modules"})
	if err != nil {
		fmt.Println("装载失败:\n", err)
		return
	}
	// 加载库
	c, err := goloader.Load(r, symPtr)
	if err != nil {
		fmt.Println("加载错误:\n", err)
		return
	}
	// 测试
	portPtr := c.Syms["modules.GetModules"]
	portContainer := (uintptr)(unsafe.Pointer(&portPtr))
	portFunc := *(*func() port.Modules)(unsafe.Pointer(&portContainer))
	// 测试结构体
	fmt.Println(portFunc().GatModules())
}
